/**
 * Created by JetBrains PhpStorm. User: taoqili Date: 12-2-20 Time: 上午11:19 To
 * change this template use File | Settings | File Templates.
 */

(function() {

	editor.setOpt({
				videoFieldName : "upfile"
			});

	var video = {}, uploadVideoList = [], isModifyUploadVideo = false;

	window.onload = function() {
		initTabs();
		initVideo();
		// initUpload();
		var img = editor.selection.getRange().getClosedNode();
		if (typeof(img) != 'undefined') {
			var vWidth = img.width;
			var vHeight = img.height;
			var vId = img.getAttribute("_url");
			vId = vId.substring(39);
			vId = vId.substring(0, vId.length - 6)
			document.getElementById("vWidth").value = vWidth;
			document.getElementById("vHeight").value = vHeight;
			document.getElementById("vId").value = vId;
			jrUrl = "skip.jsp?videoid=" + vId;
		} else {
			document.getElementById("vWidth").value = 550;
			document.getElementById("vHeight").value = 280;
			document.getElementById("vId").value = "";
		}
		document.getElementById("skipIframe").setAttribute("src", jrUrl);
	};

	/* 初始化tab标签 */
	function initTabs() {
		var tabs = $G('tabHeads').children;
		for (var i = 0; i < tabs.length; i++) {
			domUtils.on(tabs[i], "click", function(e) {
				var target = e.target || e.srcElement;
				for (var j = 0; j < tabs.length; j++) {
					if (tabs[j] == target) {
						tabs[j].className = "focus";
						$G(tabs[j].getAttribute('data-content-id')).style.display = "block";
					} else {
						tabs[j].className = "";
						$G(tabs[j].getAttribute('data-content-id')).style.display = "none";
					}
				}
			});
		}
	}

	function initVideo() {
		addOkListener();
	};
	/**
	 * 监听确认和取消两个按钮事件，用户执行插入或者清空正在播放的视频实例操作
	 */
	function addOkListener() {
		dialog.onok = function() {
			var currentTab = findFocus("tabHeads", "tabSrc");
			switch (currentTab) {
				case "video" :
					return insertSingle();
					break;
				case "videoSearch" :
					return insertSearch("searchList");
					break;
				case "upload" :
					return insertUpload();
					break;
			}
		};
		dialog.oncancel = function() {
			// $G("preview").innerHTML = "";
		};
	}

	function selectTxt(node) {
		if (node.select) {
			node.select();
		} else {
			var r = node.createTextRange && node.createTextRange();
			r.select();
		}
	}

	/**
	 * 依据传入的align值更新按钮信息
	 * 
	 * @param align
	 */
	function updateAlignButton(align) {
		var aligns = $G("videoFloat").children;
		for (var i = 0, ci; ci = aligns[i++];) {
			if (ci.getAttribute("name") == align) {
				if (ci.className != "focus") {
					ci.className = "focus";
				}
			} else {
				if (ci.className == "focus") {
					ci.className = "";
				}
			}
		}
	}

	/**
	 * 将单个视频信息插入编辑器中
	 */
	function insertSingle() {
		var width = $G("videoWidth"), height = $G("videoHeight"), url = $G('videoUrl').value, align = findFocus(
				"videoFloat", "name");
		if (!url)
			return false;
		if (!checkNum([width, height]))
			return false;
		editor.execCommand('insertvideo', {
					url : convert_url(url),
					width : width.value,
					height : height.value,
					align : align
				}, isModifyUploadVideo ? 'upload' : null);
	}

	/**
	 * 将元素id下的所有代表视频的图片插入编辑器中
	 * 
	 * @param id
	 */
	function insertSearch(id) {
		var imgs = domUtils.getElementsByTagName($G(id), "img"), videoObjs = [];
		for (var i = 0, img; img = imgs[i++];) {
			if (img.getAttribute("selected")) {
				videoObjs.push({
							url : img.getAttribute("ue_video_url"),
							width : 420,
							height : 280,
							align : "none"
						});
			}
		}
		editor.execCommand('insertvideo', videoObjs);
	}

	/**
	 * 找到id下具有focus类的节点并返回该节点下的某个属性
	 * 
	 * @param id
	 * @param returnProperty
	 */
	function findFocus(id, returnProperty) {
		var tabs = $G(id).children, property;
		for (var i = 0, ci; ci = tabs[i++];) {
			if (ci.className == "focus") {
				property = ci.getAttribute(returnProperty);
				break;
			}
		}
		return property;
	}
	function convert_url(url) {
		if (!url)
			return '';
		url = utils.trim(url).replace(
				/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i,
				'player.youku.com/player.php/sid/$1/v.swf').replace(
				/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i,
				"www.youtube.com/v/$2").replace(/youtu.be\/(\w+)$/i,
				"www.youtube.com/v/$1").replace(
				/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i,
				"player.ku6.com/refer/$1/v.swf").replace(
				/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i,
				"player.56.com/v_$1.swf").replace(
				/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i,
				"player.56.com/v_$1.swf").replace(
				/v\.pps\.tv\/play_([\w]+)\.html.*$/i,
				"player.pps.tv/player/sid/$1/v.swf").replace(
				/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i,
				"i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0")
				.replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i,
						"www.tudou.com/v/$1").replace(
						/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i,
						"static.video.qq.com/TPout.swf?vid=$1").replace(
						/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i,
						"static.video.qq.com/TPout.swf?vid=$1").replace(
						/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i,
						"share.vrs.sohu.com/my/v.swf&id=$1");

		return url;
	}

	/**
	 * 检测传入的所有input框中输入的长宽是否是正数
	 * 
	 * @param nodes
	 *            input框集合，
	 */
	function checkNum(nodes) {
		for (var i = 0, ci; ci = nodes[i++];) {
			var value = ci.value;
			if (!isNumber(value) && value) {
				alert(lang.numError);
				ci.value = "";
				ci.focus();
				return false;
			}
		}
		return true;
	}

	/**
	 * 数字判断
	 * 
	 * @param value
	 */
	function isNumber(value) {
		return /(0|^[1-9]\d*$)/.test(value);
	}

	/**
	 * 创建图片浮动选择按钮
	 * 
	 * @param ids
	 */
	function createAlignButton(ids) {
		for (var i = 0, ci; ci = ids[i++];) {
			var floatContainer = $G(ci), nameMaps = {
				"none" : lang['default'],
				"left" : lang.floatLeft,
				"right" : lang.floatRight,
				"center" : lang.block
			};
			for (var j in nameMaps) {
				var div = document.createElement("div");
				div.setAttribute("name", j);
				if (j == "none")
					div.className = "focus";
				div.style.cssText = "background:url(images/" + j
						+ "_focus.jpg);";
				div.setAttribute("title", nameMaps[j]);
				floatContainer.appendChild(div);
			}
			switchSelect(ci);
		}
	}

	/**
	 * 选择切换
	 * 
	 * @param selectParentId
	 */
	function switchSelect(selectParentId) {
		var selects = $G(selectParentId).children;
		for (var i = 0, ci; ci = selects[i++];) {
			domUtils.on(ci, "click", function() {
						for (var j = 0, cj; cj = selects[j++];) {
							cj.className = "";
							cj.removeAttribute && cj.removeAttribute("class");
						}
						this.className = "focus";
					})
		}
	}

	/**
	 * 监听url改变事件
	 * 
	 * @param url
	 */
	function addUrlChangeListener(url) {
		if (browser.ie) {
			url.onpropertychange = function() {
				createPreviewVideo(this.value);
			}
		} else {
			url.addEventListener("input", function() {
						createPreviewVideo(this.value);
					}, false);
		}
	}

	/**
	 * 根据url生成视频预览
	 * 
	 * @param url
	 */
	function createPreviewVideo(url) {

		if (!url)
			return;
		var matches = url.match(/youtu.be\/(\w+)$/)
				|| url.match(/youtube\.com\/watch\?v=(\w+)/)
				|| url.match(/youtube.com\/v\/(\w+)/), youku = url
				.match(/youku\.com\/v_show\/id_(\w+)/), youkuPlay = /player\.youku\.com/ig
				.test(url);
		if (!youkuPlay) {
			if (matches) {
				url = "https://www.youtube.com/v/" + matches[1]
						+ "?version=3&feature=player_embedded";
			} else if (youku) {
				url = "http://player.youku.com/player.php/sid/" + youku[1]
						+ "/v.swf"
			} else if (!endWith(url, [".swf", ".flv", ".wmv"])) {
				$G("preview").innerHTML = lang.urlError;
				return;
			}
		} else {
			url = url.replace(/\?f=.*/, "");
		}
		$G("preview").innerHTML = '<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"'
				+ ' src="'
				+ url
				+ '"'
				+ ' width="'
				+ 420
				+ '"'
				+ ' height="'
				+ 280
				+ '"'
				+ ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" ></embed>';
	}

	/**
	 * 末尾字符检测
	 * 
	 * @param str
	 * @param endStrArr
	 */
	function endWith(str, endStrArr) {
		for (var i = 0, len = endStrArr.length; i < len; i++) {
			var tmp = endStrArr[i];
			if (str.length - tmp.length < 0)
				return false;

			if (str.substring(str.length - tmp.length) == tmp) {
				return true;
			}
		}
		return false;
	}

	/**
	 * ajax获取视频信息
	 */
	function getMovie() {
		var keywordInput = $G("videoSearchTxt");
		if (!keywordInput.getAttribute("hasClick") || !keywordInput.value) {
			selectTxt(keywordInput);
			return;
		}
		$G("searchList").innerHTML = lang.loading;
		var keyword = keywordInput.value, type = $G("videoType").value, str = "";
		ajax.request(editor.options.getMovieUrl, {
			searchKey : keyword,
			videoType : type,
			onsuccess : function(xhr) {
				try {
					var info = eval("(" + xhr.responseText + ")");
				} catch (e) {
					return;
				}

				var videos = info.multiPageResult.results;
				var html = ["<table width='530'>"];
				for (var i = 0, ci; ci = videos[i++];) {
					html
							.push("<tr>"
									+ "<td><img title='"
									+ lang.clickToSelect
									+ "' ue_video_url='"
									+ ci.outerPlayerUrl
									+ "' alt='"
									+ ci.tags
									+ "' width='106' height='80' src='"
									+ ci.picUrl
									+ "' /> </td>"
									+ "<td>"
									+ "<p><a target='_blank' title='"
									+ lang.goToSource
									+ "' href='"
									+ ci.itemUrl
									+ "'>"
									+ ci.title.substr(0, 30)
									+ "</a></p>"
									+ "<p style='height: 62px;line-height: 20px' title='"
									+ ci.description + "'> "
									+ ci.description.substr(0, 95) + " </p>"
									+ "</td>" + "</tr>");
				}
				html.push("</table>");
				$G("searchList").innerHTML = str = html.length == 2
						? lang.noVideo
						: html.join("");
				var imgs = domUtils.getElementsByTagName($G("searchList"),
						"img");
				if (!imgs)
					return;
				for (var i = 0, img; img = imgs[i++];) {
					domUtils.on(img, "click", function() {
								changeSelected(this);
							})
				}
			}
		});
	}

	/**
	 * 改变对象o的选中状态
	 * 
	 * @param o
	 */
	function changeSelected(o) {
		if (o.getAttribute("selected")) {
			o.removeAttribute("selected");
			o.style.cssText = "filter:alpha(Opacity=100);-moz-opacity:1;opacity: 1;border: 2px solid #fff";
		} else {
			o.setAttribute("selected", "true");
			o.style.cssText = "filter:alpha(Opacity=50);-moz-opacity:0.5;opacity: 0.5;border:2px solid blue;";
		}
	}

	/* 插入上传视频 */
	function insertUpload() {
		var vUrl = "http://player.youku.com/player.php/sid/"
				+ document.getElementById("vId").value + "/v.swf";
		if (document.getElementById("vId").value != '') {
			var videoAttr = {
				// 视频地址
				url : vUrl,
				// 视频宽高值， 单位px
				width : document.getElementById("vWidth").value,
				height : document.getElementById("vHeight").value
			};
			editor.execCommand('insertvideo', videoAttr);
		}
	}
})();

function loadVideo() {

}